﻿<?php

/**
 * Podstawowa abstrakcyjna klasa od ktorej powinny dziedziczyc wszystkie pozostale. Definiuje metody ktore powinny znalezc sie w kazdym
 * dziedziczacym obiekcie oraz metody wspolne
 *
 * @abstract Object
 * @package Object
 */
 
abstract class Object
{
    abstract public function getData();
    abstract public function saveData( $data );
    abstract public static function updateData( $data );


    /**
     * Konstruktor obiektu, jesli przekazemy ID wtedy do tablicy $data zostana pobrane dane obiektu
     *
     * @param int $id
     */
    function __construct( $id=0 )
    {
        $this->id = (int)$id;

        if( $this->id > 0 )
        {
            //genErrorMsg( 1, '__construct', __FILE__, __FUNCTION__, __LINE__, $this->id );
            $this->data = $this->getData();
            //genErrorMsg( 1, '__construct', __FILE__, __FUNCTION__, __LINE__, print_r($this->data['id'],true) );
             //dump($this->getData());
             //exit;
        }
    }
    
    
    
    /**
     * Generuje kod SQL sortujacy wynik zapytania wg podanej tablicy asocjacyjnej $sort
     *
     * @param array $sort Tablica asocjacyjna okreslajaca sortowanie, musi zawierac klucz 'sort' okreslajacy po ktorym polu sortujemy oraz klucz 'order' okreslajacy kolejnosc sortowania (ASC/DESC)
     * @return string
     */
protected   function getSort( $sort = NULL )
    {
        $sql = '';

        if( isset($sort) && is_array($sort) )
        {
                $sql.= " ORDER BY ".$sort['sort']." ".$sort['order'];
        }
        return $sql;
    }
    
    
    /**
     * Generuje kod SQL ograniczajacy ilosc zwracanych wynikow wg tablicy asocjacyjnej $limit
     *
     * @param array $limit Tablica asocjacyjna okreslajaca przedzial zwracanych wynikow, musi zawierac klucz 'start' okreslajacy od ktorego rekordu pobieramy wyniki oraz klucz 'limit' okreslajacy ile rekordow ma zostac zwroconych
     * @return string
     */
protected    function getLimit( $limit = NULL )
    {
        $sql = '';

        if( isset($limit) && is_array($limit) )
        {
            if( isset($limit['start']) && is_numeric($limit['start']) &&
                isset($limit['limit']) && is_numeric($limit['limit']) )
            {
                $sql.= " LIMIT ".$limit['start'].", ".$limit['limit'];
            }
        }
        return $sql;
    }
    
    
    
   
    
    
    


}


?>
